# 步骤：
# 0. 导包
import logging, os
from logging import handlers
from config import DIR_NAME


def init_log():
    # 1. 创建日志器对象
    logger = logging.getLogger()
    # 2. 设置日志打印级别
    logger.setLevel(logging.INFO)
    # logging.DEBUG 调试级别
    # logging.INFO 信息级别
    # logging.WARNING 警告级别
    # logging.ERROR 错误级别
    # logging.CRITICAL 严重错误级别
    # 3. 创建处理器对象
    # 创建 输出到控制台 处理器对象
    sh = logging.StreamHandler()
    # 创建 输出到日志文件 处理器对象
    file = DIR_NAME + os.sep + "log" + os.sep + "ihrm.log"  # 以绝对路径存放日志文件
    fh = logging.handlers.TimedRotatingFileHandler(file,  # 日志文件名
                                                   when="midnight",  # when表示以x为单位记录，比如：午夜0点
                                                   interval=3,  # 等待when的时间后进行记录的日志
                                                   backupCount=3,  # 记录日志的个数
                                                   encoding="utf-8")  # 字符集
    # 4. 创建日志信息格式
    # 日志内容格式：
    fmt = "%(asctime)s %(levelname)s [%(filename)s(%(funcName)s:%(lineno)d)] - %(message)s"
    formatter = logging.Formatter(fmt)
    # 5. 将日志信息格式设置给处理器
    # 设置给 控制台处理器
    sh.setFormatter(formatter)
    # 设置给 日志文件处理器
    fh.setFormatter(formatter)
    # 6. 给日志器添加处理器
    # 给日志对象 添加 控制台处理器
    logger.addHandler(sh)
    # 给日志对象 添加 日志文件处理器
    logger.addHandler(fh)


if __name__ == '__main__':
    # 调用函数
    init_log()
    # 打印测试日志
    logging.info("这个是测试日志")
    logging.warning("这个是告警信息")
    logging.error("这个是错误信息")
